In the quickly changing technology landscape that electronic device designers and manufacturers operate in, it may be difficult to produce a product that includes all the functionality desired by customers. Even if the device is created with all the desirable features a customer desires at the time of purchase, the customer may wish for additional functionality after the device has been purchased.
Furthermore, assuming resources like memory are not unlimited on the device, manufacturers may not be able to implement all the desired features and are forced to try and determine which features and functionality will be desired most by customers. Regardless of whether manufactures make this determination correctly or not, there will always be functionality not included on the device that is desired by some customers.
One way to provide additional functionality and allow an electronic device to adapt to the changing demands of customers is to provide the ability to update the firmware or embedded software of the electronic device. The ability to update the firmware of an electronic device provides the ability to increase the functionality of the device even after the customer has purchased and received the device. In addition to creating additional functionality, the ability to update the firmware also allows errors or bug fixes to be performed after the device has been sold and shipped to the customer.
Additional functionality may be provided to the electronic device in the form of applications that are designed to run on the electronic device and perform additional functions or features. Smart phones are a great example of how added functionality may be provided by using additional applications. Manufacturers of smart phone operating systems such as Apple® and Google's® Android® have provided Application Programmer Interfaces (APIs) to allow third parties to create custom applications that may run on the standard operating systems. The custom applications can access the underlying phone hardware through the API and can provide added functionality to the phone. Numerous additional custom applications are available for phone platforms. These additional applications provide a wide variety of functions and may greatly expand the functionality of the device even years after the device was purchased.
Although APIs may be provided to encourage third-party development of custom applications, the manufacturer or designer of the device may also develop their own additional applications without reliance on third-party development.
While the smart phone industry has embraced the ability to update the firmware of the device even after the customer has purchased the device, numerous other types of electronic devices do not provide this ability. In product lines that do not allow customers to update the firmware, customers may have a difficult purchasing decision to make. A particular product may have superior hardware but lack all the desired functionality in the software on the device. In contrast, another product may have lots of desirable software functionality but the software is running on inferior hardware.
One of the obstacles to providing the ability to update the firmware/embedded software on electronic devices is the fact that many devices use a compressed file system to save memory requirements and/or space. In a compressed file system the firmware image resides in non-volatile memory in a compressed format. When the device is powered on the firmware image is decompressed, unpacked or expanded and executed.
On devices with a compressed firmware image stored in a compressed file system, any additional applications that need to be stored in the compressed file system also need to be compressed. Converting the additional applications into a compressed format within the electronic device is technically possible but does not lend itself to a high level of robustness.
First of all, hardware in most electronic devices is reduced to the minimal requirements needed to operate the device and may not be equipped to perform the compression. Furthermore, performing the compression on the electronic device may subject the compression to interruption from power outage or by the user. If the compression is not performed correctly and/or completed, the device may fail to operate and may not be able to be fixed without involving the manufacturer.